package com.lh.service;

import com.lh.entity.Goods;

import java.util.List;
import java.util.Map;

/**
 * @Author: LuoHang
 * @Date: 2021/2/10 12:26
 * @Description
 */

public interface GoodsService {
    /**
     * 通过id查询到指定的商品
     *
     * @param id 对应的id
     * @return 商品对象
     */
    Goods getGoodsById(Integer id);

    /**
     * 获取商品信息列表
     *
     * @param map 对应条件的
     * @return 集合
     */
    List<Goods> getGoods(Map<String,Object> map);

    /**
     * 记录条数
     *
     * @param map 条件
     * @return count 总记录数
     */
    int getCount(Map<String,Object> map);

    /**
     * 商品添加
     *
     * @param goods 要添加的商品对象 包含了上架商品的一切信息
     * @return count int 影响的行数
     */
    int addGoods(Goods goods);

    /**
     * 商品信息的更新
     *
     * @param map 更新的数据
     * @return count int 影响的行数
     */
    int updateGoods(Map<String,Object> map);

    /**
     * 通过ID删除指定的商品
     *
     * @param id　对应的id
     * @return count 影响的行数
     */
    int deleteGoodsById(Integer id);

    /**
     * 批量下架
     * @param ids id数组
     * @return 是否批量下架成功
     */
    int downMany(List<Integer> ids);

    /**
     * 批量上架
     * @param ids 集合
     * @return 成功否
     */
    int upMany(List<Integer> ids);

    /**
     * 批量删除
     * @param ids 集合
     * @return 成功否
     */
    int deleteGoodsByIds(List<Integer> ids);

    /**
     * 前台商品展示和更多商品展示
     *
     * @param map 条件
     * @return 集合
     */
    List<Goods> getGoodsByTime(Map<String,Object> map);

    /**
     * 查询不同分类产品总数量
     *
     * @param categoryId 分类id
     * @return 不同分类的产品数量
     */
    int getGoodsCategoryCount(Integer categoryId);

    Goods getGoodsAdd(Integer userId);
}
